﻿using System.Collections.Generic;
using Neturion.Dados;
using Neturion.IRepositorios;
using Neturion.Repositorios;
using Neturion.Utils;

namespace Neturion.Negocios
{
    /// <summary>
    /// 
    /// </summary>
    public class NegocioMidia
    {
        private IRepositorioMidia _repositorioMidia;

        /// <summary>
        /// 
        /// </summary>
        public NegocioMidia()
        {
            _repositorioMidia = new RepositorioMidia();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="midia"></param>
        /// <returns></returns>
        public Midia Inserir(Midia midia)
        {
            midia.Codigo = GeradorCodigo.GerarCodigo(1);
            midia.Codigo += (_repositorioMidia.ObterUltimoIdCodigoInteiro() + 1).ToString();
            midia.Codigo += GeradorCodigo.GerarCodigo(1, midia.Codigo);
            return _repositorioMidia.Inserir(midia);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="midia"></param>
        /// <returns></returns>
        public Midia Atualizar(Midia midia)
        {
            return _repositorioMidia.Atualizar(midia);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="midia"></param>
        public void Excluir(Midia midia)
        {
            Midia midiaTmp = ObterPorId(midia.MidiaId);
            _repositorioMidia.Excluir(midiaTmp);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public IList<Midia> ObterTodos()
        {
            return _repositorioMidia.ObterTodos();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Midia ObterPorId(int id)
        {
            return _repositorioMidia.ObterPorId(id);
        }

        public Midia ObterPorCodigo(Usuario usuarioPermissao, string codigo)
        {
            return _repositorioMidia.ObterPorCodigo(codigo);
        }

        public IList<Midia> ObterPorDescricao(int inicio, int quantidade, int quantidadeMinima, string descricao)
        {
            return _repositorioMidia.ObterPorDescricao(inicio, quantidade, quantidadeMinima, descricao);
        }

        public IList<Midia> ObterPorTipoMidia(int inicio, int quantidade, int quantidadeMinima, TipoMidia tipoMidia)
        {
            return _repositorioMidia.ObterPorTipoMidia(inicio, quantidade, quantidadeMinima, tipoMidia);
        }

        public IList<Midia> ObterPorFornecedor(int inicio, int quantidade, int quantidadeMinima, Fornecedor fornecedor)
        {
            return _repositorioMidia.ObterPorFornecedor(inicio, quantidade, quantidadeMinima, fornecedor);
        }
    }
}